package com.moli.iov.open.service;

import com.moli.iov.base.model.dto.req.QueryVehicleFenceOpDto;
import com.moli.iov.base.model.dto.req.VehicleFenceReqDto;
import com.moli.iov.base.model.dto.req.VehicleFenceReqOpDto;
import com.moli.iov.base.model.dto.res.VehicleFenceResDto;
import com.moli.iov.model.dto.req.PageExtend;
import com.moli.iov.rest.RestResponse;

import java.util.List;

/**
 * 围栏管理
 * @author whl
 */
public interface VehicleFenceService {

  /**
   * 添加
   * @param dto
   * @return
   */
  RestResponse saveVehicleFence(VehicleFenceReqOpDto dto);

  /**
   * 修改
   * @param dto
   * @return
   */
  RestResponse updateVehicleFence(VehicleFenceReqOpDto dto);

  /**
   * 删除围栏
   *
   * @param dto
   * @return
   */
  RestResponse deleteVehicleFence(VehicleFenceReqOpDto dto);

  /**
   * 查询列表
   * @param dto
   * @return
   */
  RestResponse<PageExtend<VehicleFenceResDto>>   listVehicleFence(VehicleFenceReqDto dto);

  /**
   * 重绘
   * @param dto
   * @return
   */
  RestResponse redrawVehicleFence(VehicleFenceReqDto dto);

  /**
   * 根据围栏id得到围栏
   *
   * @param dto null 为全部
   * @return
   */
  RestResponse listVehicleFences(QueryVehicleFenceOpDto dto);

  /**
   * 围栏是否绑定有车
   * @param dto fenceId
   * @return
   */
  RestResponse isBindingVehicleByFenceId(QueryVehicleFenceOpDto dto);

  /**
   * 根据围栏名称模糊查找围栏
   * @param dto
   * @return
   */
  RestResponse listVehicleFenceByFenceName(QueryVehicleFenceOpDto dto);

  /**
   *
   * @param dto
   * @return
   */
  RestResponse listVehicleFenceByVinList(QueryVehicleFenceOpDto dto);

  /**
   * 根据围栏id获取围栏
   * @param dto
   * @return
   */
  RestResponse getVehicleFenceById(QueryVehicleFenceOpDto dto);
}
